/*
 * @Author: shenya shenya0203@163.com
 * @Date: 2024-03-27 15:31:11
 * @LastEditors: shenya shenya0203@163.com
 * @LastEditTime: 2024-04-19 05:41:25
 * @FilePath: /code/include/rhythm_light.h
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#ifndef __RHYTHM_LIGHT_H
#define __RHYTHM_LIGHT_H

#include "stdint.h"

typedef struct
{
    uint8_t pwr; // 电源
    uint8_t r;
    uint8_t g;
    uint8_t b;
    uint8_t brightness; // 亮度
    uint8_t c;          // 冷光
    uint8_t w;          // 暖光
} gEP_t;                // 灯群组执行参数

typedef struct
{
    uint16_t reId;
    gEP_t gEP; // 大小确定的结构体
    uint16_t gid;
    uint8_t type;
    uint16_t deviceType; // 额外增加的，控制需要的参数，在parse中获取
} rhyR_t;                // 节律关系，一个节点下的其中一个群组

typedef struct
{
    uint16_t nId;
    uint32_t nT; // 转换后的数字，不用字符串
    uint8_t *nN;
    rhyR_t *rhyR;
    uint8_t rhyR_size;
} rN_t; // 节律节点，整个节点（即时间点）的所有群组



extern uint8_t controlGroupFlag; // 群组控制标志，在节律照明时需要

uint8_t getWeek();
int get_rEC();
int get_paramJson();
uint8_t get_time();
int get_ryct();
uint8_t get_light();
uint32_t time_to_seconds(const char *time_str);
uint32_t nowtime_seconds();
int rN_parse();

void task_gEP();
void readData(void);
int read_rhythmData(char *buffer);
void rN_free();
uint32_t time_to_seconds(const char *time_str);
uint32_t nowtime_seconds();

void rhythm_timer_set();
int rhythm_groupControl(uint16_t groupID, uint16_t deviceType ,gEP_t ep);
int rhythm_groupOff();

void rhythm_timer_create();
void rhythm_timer_set();
void rhythm_timer_stop();
void rhythm_stop();

int read_rhythmData(char *buffer);
#endif
